import re

# pattern = r'\d\d\d-\d\d\d-\d\d\d\d'
# pattern = r'\d\d\d-\d\d\d-\d\d\d\d$' 添加 $ 表示 ’字符串结尾‘ 末尾只能有 4位 上方正则 末尾可以不止4位
pattern = r'\d\d\d[ -]\d\d\d[ -]\d\d\d\d$'

s = input('Enter tel. number: ')
if re.match(pattern,s):
# if re.fullmatch(pattern,s):  使用 fullmatch 时 与 $ 有相同作用 它是执行完全匹配（匹配结束后不能有多余数据）
    print('Number accepted.')
else:
    print('Incorrect format.')

# 创建一个字符集
# [ -] 表示匹配一个空格 或者 -

# if re.match('m*ack','Mack the Knife',re.IGNORECASE):   # re.IGNORECASE 表示忽略字母大小写
if re.match('m*ack', 'Mack the Knife', re.I):       # re.I 和 re.IGNORECASE 作用相同 是它的缩写
    print('Success')

if re.match('m*ack', 'Mack the Knife', re.I|re.DEBUG):
    print('Success')


# 一个正则表达式案例 对于输入的密码
pat1 = r'(\w|[@#$%^&*!]){8,}$'  # \w表示匹配任何字母、数字字符（字母或数字）或下划线
pat2 = r'.*\d'     # .*表示匹配零个或多个任意字符（数字、字母、下划线、标点符号也是可以的）
pat3 = r'.*[a-zA-Z]'
pat4 = r'.*[@#$%^$*]'

def verify_passwd(s):
    b = (re.match(pat1,s) and re.match(pat2,s) and
         re.match(pat3,s) and re.match(pat4,s) )
    return bool(b)   # bool 表示布尔值 返回true或false


s = re.match('x{2,4}y','xxxy')
print(s.group())


pat = r'(a+)(b+)(c+)'
m = re.match(pat,'abbcccee')
for i in range(m.lastindex + 1):   # lastindex 表示在匹配过程中找到的分组数量
    print(i,'. ',m.group(i),sep='')   # group(0) 返回匹配的整个文本， group(1)表示第一组匹配到的值 2 表示第二组......

patssss = r'(a+)(b+)(c+)'
msss = re.match(pat,'abbcccee')


